package br.com.sgpv2.hibernate.folha;

import java.util.List;

import org.hibernate.Session;

import br.com.sgpv2.controler.NegocioExeception;
import br.com.sgpv2.entity.folha.Folha;

public interface FolhaRepository {
	
	/**
	 * Método que salva uma folha no sistema.
	 */
	void salvar(Folha folha);

	/**
	 * Método que busca uma folha no sistema.
	 */
	Folha buscar(Integer pk) throws NegocioExeception;

	/**
	 * Método que altera uma folha no sistema.
	 */
	void alterar(Folha folha);

	/**
	 * Método que lista todas as folha do sistema.
	 */
	List<Folha> listar();
	
	public Session recuperarSession();

	/**
	 * Método que exclui uma folha do sistema.
	 */
	void excluir(Folha folha);

	Folha buscarPorMesAno(Integer mes, Integer ano);
	
	/**
	 * Método consulta todas as folhas que possuem o status fechado.
	 * @return
	 */
	List<Folha> consultarFolhaFechada();
	
	/**
	 * Método consulta todas as folhas, ordenando por ano e mês decrescente.
	 * @return
	 */
	List<Folha> consultarFolhas();
	
	int buscarIdPorMesAno(Integer mes, Integer ano);
	
}
